#include "EstrategiaAlmacenamiento.h"
#include "Excepciones.h"

namespace Toolkit
{

EstrategiaAlmacenamiento::EstrategiaAlmacenamiento(
        const unsigned long int &tamanoBloque)
{
    this-> tamanoBloque = tamanoBloque;

    this->datoAuxiliar = NULL;

}

EstrategiaAlmacenamiento::~EstrategiaAlmacenamiento()
{
    if (datoAuxiliar != NULL)
    {
        delete datoAuxiliar;
    }

}

bool EstrategiaAlmacenamiento::busquedaSecuencial(
        Almacenamiento &almacenamiento, Dato & dato, const Clave &clave,
        unsigned long int &posicion, WrapperComponente &wrapper)
{
    for (unsigned int i = 0; i < almacenamiento.cantElementos(); i++)
    {
        try
        {
            bool resultado = recuperarDato(almacenamiento, i, dato, clave,
                    wrapper);
            if (resultado && (clave == dato))
            {
                posicion = i;
                return true;
            }
        } catch (UnidadEliminadaException)
        {
            continue;
        }
    }

    return false;
}

}
